package com.moji.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.moji.common.base.PageEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * <p>
 * 出库单
 * </p>
 *
 * @author drinkcode
 * @since 2023-05-18
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="WmsWarehouseOutOrder对象", description="出库单")
public class WmsWarehouseOutOrder extends PageEntity implements Serializable {

    private static final long serialVersionUID=1L;

    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty(value = "出库单号")
    private String warehouseEntryNo;

    @ApiModelProperty(value = "出预约单号 -保存")
    private String documentNo;

    @ApiModelProperty(value = "出库类型 1-销售出库  2-调拨出库 -保存")
    private String outWarehouseType;

    @ApiModelProperty(value = "仓库类型 1-普通仓  2-监管仓 保存")
    private Integer warehouseType;

    @ApiModelProperty(value = "仓库名称 保存")
    private String warehouseName;

    @ApiModelProperty(value = "仓库代码 保存")
    private String warehouseCode;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "出库日期 保存")
    private LocalDate warehouseDate;

    @ApiModelProperty(value = "货主id 保存")
    private Long ownerCargoId;

    @ApiModelProperty(value = "货主名称 保存")
    private String ownerCargoName;

    @ApiModelProperty(value = "出库多种物资预约单重量")
    private BigDecimal warehousingActualWeight;

    @ApiModelProperty(value = "出库多种物资预约单数量")
    private BigDecimal warehousingActualNum;

    @ApiModelProperty(value = "出库多种物资实际重量")
    private BigDecimal warehousingReservationStorage;

    @ApiModelProperty(value = "出库多种物资实际数量")
    private BigDecimal warehousingReservationNum;

    @ApiModelProperty(value = "运输公司名称")
    private String sendGoodsCompany;

    @ApiModelProperty(value = "货车司机姓名")
    private String truckDriverName;

    @ApiModelProperty(value = "货车司机联系方式")
    private String truckDriverPhone;

    @ApiModelProperty(value = "货车车牌号")
    private String licensePlateNumber;

    @ApiModelProperty(value = "计量方式  1-理计  2-过磅")
    private String measurementMethod;

    @ApiModelProperty(value = "出库单更新人id")
    private String operatorId;

    @ApiModelProperty(value = "货主编码(比如淘钢网 10001)")
    private String ownerCode;

    @ApiModelProperty(value = "货主部门路径这个是全路径 1001,1001001,1001001001")
    private String ownerDepartmentPath;

    @ApiModelProperty(value = "状态（0-不可用，1-可用）")
    private Integer status;

    @ApiModelProperty(value = "出库创建人id")
    private String createId;

    @ApiModelProperty(value = "出库创建人")
    private String createUser;

    @ApiModelProperty(value = "录入部门编码")
    private String createDepartmentCode;

    @ApiModelProperty(value = "创建日期")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @ApiModelProperty(value = "更新日期")
    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;

    @ApiModelProperty(value = "备用字段1 int类型")
    private Integer spareInt1;

    @ApiModelProperty(value = "备用字段2 int类型")
    private Integer spareInt2;

    @ApiModelProperty(value = "备用字段1 String类型")
    private String spareString1;

    @ApiModelProperty(value = "备用字段2 String类型")
    private String spareString2;

    @ApiModelProperty(value = "全局唯一流水号")
    private String seqNo;

    @ApiModelProperty(value = "备注 保存")
    private String remark;

    @ApiModelProperty(value = "流程id")
    private String procdefId;

    @ApiModelProperty(value = "审核状态 0-待审核 1-已发起未审核通过 2-审核通过 3-审核拒绝")
    private String auditStatus;

    @ApiModelProperty(value = "库位id 保存")
    private Long warehouseLocationId;

    @ApiModelProperty(value = "库位名称 ")
    private String warehouseLocationName;

    @ApiModelProperty(value = "库位编码")
    private String warehouseLocationCode;

    @ApiModelProperty(value = "产区名称 保存")
    private String belongIndustrialParkName;

    @ApiModelProperty(value = "库位区域 比如 A区等 保存")
    private String area;

    @ApiModelProperty(value = "大类名称")
    private String mainCategoryName;

    @ApiModelProperty(value = "大类编码")
    private String mainCategoryCode;


}
